package com.xr.blog.pojo;

import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;

import java.io.Serializable;
import java.util.Date;
import java.util.List;

import lombok.Data;
import org.apache.ibatis.annotations.Insert;
import org.apache.ibatis.annotations.Update;

import javax.validation.Valid;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;

/**
 * 评论表
 * 
 * @author XRJ
 * @email 1033835209@qq.com
 * @date 2020-07-16 12:37:49
 */
@Data
@Valid
@TableName("blog_comment")
public class BlogComment implements Serializable {
	private static final long serialVersionUID = 1L;

	/**
	 * 主键id
	 */
	@NotNull(groups = {Update.class},message = "主键不能为空")
	private Long id;

	/**
	 * 目标类型 1：文章 2：评论
	 */
	@NotNull(groups = {Insert.class},message = "评论类型不能为空")
	private Integer targetType;

	/**
	 * 评论主体id：文章id、评论id等
	 */
	@NotNull(groups = {Insert.class},message = "评论目标ID不能为空")
	private Long targetId;


	/**
	 * 回复目标的用户
	 */
	private String replyUserName;

	/**
	 * 评论内容
	 */
	@NotBlank(groups = {Insert.class},message = "评论内容不能为空")
	private String content;

	/**
	 * 评论者使用的浏览器
	 */
	private String userAgent;

	/**
	 * 评论者的ip地址
	 */
	private String ip;

	/**
	 * 父级评论
	 */
	private Long parentId;

	/**
	 * 评论时间
	 */
	private Date createTime;

	/**
	 * 评论状态 0：待审核 1：已发布 2：已删除
	 */
	@NotNull(groups = {Update.class},message = "评论状态不能为空")
	private Integer status;


	/**
	 * 评论者
	 */
	private String author;
	/**
	 * 评论者的邮箱
	 */
	private String email;
	/**
	 * 邮箱MD5值，用于显示gravatar头像
	 */
	private String emailMd5;

	/**
	 * 评论的文章
	 */
	@TableField(exist = false)
	private BlogArticle article;

	/**
	 * 子级评论
	 */
	@TableField(exist = false)
	private List<BlogComment> subComments;

	/**
	 * 父级评论
	 */
	@TableField(exist = false)
	private BlogComment parentComment;

	/**
	 * 评论人
	 */
	@TableField(exist = false)
	private SysUser user;

	/**
	 * 被追评的人
	 */
	@TableField(exist = false)
	private SysUser replyUser;

}
